package com.yantong.service;

import com.yantong.pojo.Category;
import com.yantong.pojo.vo.CategoryVo;
import com.yantong.utils.PageUtils;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface CategoryService {


	/**
	 * 分类列表:获取所有分类
	 *
	 * @return
	 * @author xiangyi
	 * @date 2018年8月28日-上午11:44:06
	 */
	List<Category> listCategorys();

	/**
	 * 分类列表:获取所有分类
	 *
	 * @return
	 * @author xiangyi
	 * @date 2018年8月28日-上午11:44:06
	 */
	List<Category> listCategorys(Category category);

	/**
	 * 根据paraentId获取下一级
	 *
	 * @param parentId
	 * @return
	 * @author baolingyu
	 * @date 2018年8月31日-上午11:54:37
	 */
	List<Category> listCategorys(Long parentId);

	/**
	 * 获取分类信息
	 *
	 * @param parentId 上级分类ID
	 * @param type     分类类型
	 * @return
	 */
	List<Category> listCategorys(Long parentId, Integer type, Long centreId, Long liansuoId);

	/**
	 * 保存
	 *
	 * @param obj
	 * @return
	 * @author baolingyu
	 * @date 2018年8月28日-上午11:46:11
	 */
	int save(Category obj);

	/**
	 * 详情
	 *
	 * @param id
	 * @return
	 * @author baolingyu
	 * @date 2018年8月28日-上午11:46:18
	 */
	Category getByKey(Long id);

	/**
	 * 更新
	 *
	 * @param obj
	 * @return
	 * @author baolingyu
	 * @date 2018年8月28日-上午11:46:25
	 */
	int update(Category obj);

	/**
	 * 删除
	 *
	 * @param id
	 * @return
	 * @author baolingyu
	 * @date 2018年8月28日-上午11:46:32
	 */
	int remove(Long id);

	/**
	 * 根据名称搜索id
	 *
	 * @param name
	 * @return
	 * @author baolingyu
	 * @date 2018年11月24日-下午6:37:13
	 */
	Long selectByName(String name);

	/**
	 * 根据子分类名称 父分类Id联合出子分类id（保证不会根据名称查询出多个数据）
	 */
	Long selectByNameSon(Map map);

	/**
	 * 根据子分类名称 父分类Id联合出子分类id（保证不会根据名称查询出多个数据）
	 */
	Category selectCategoryByName(Map map);

	List<Category> getListCategory(Category category);


	int copy(Long id);

	/**
	 * 查询分类列表  分页
	 *
	 * @param category 参数信息
	 * @param offset   页码
	 * @param limit    每页数量
	 * @return com.jz.common.utils.PageUtils<com.jz.user.domain.Member>
	 * @author liaozhaogui
	 * @date 2020/11/20 15:58
	 */
	PageUtils<Category> queryCategoryPage(Category category, int offset, int limit);


	List<Category> selectCategoryByProductGradeId(@Param("productGradeId") Long ProductGradeId);

	List<Category> selectByParentid(@Param("parentId") Long parentId);
}
